package net.coding.api.test.helper;

import org.apache.commons.codec.digest.DigestUtils;

import java.util.ArrayList;
import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * User: chenfeilong
 * Date: 2018/1/18
 * Time: 13:03
 * Description:
 */
public interface BaseUserHelper {
    List<UserInfo> userInfoList = new ArrayList<>();

    /**
     * 获取默认GK，默认为用户0
     *
     * @return GK
     */
    String getGlobalKey();

    /**
     * 获取用户索引为index的用户GK
     *
     * @param index
     * @return GK
     */
    String getGlobalKey(Integer index);

    /**
     * 获取默认个人GK
     *
     * @return GK
     */
    default String getPersonalGlobalKey() {
        return getPersonalGlobalKey(0);
    }

    /**
     * 获取默认个人Email
     *
     * @return GK
     */
    default String getPersonalEmail() {
        return getPersonalEmail(0);
    }

    /**
     * 获取index用户个人GK
     *
     * @return GK
     */
    default String getPersonalGlobalKey(Integer index) {
        return userInfoList.get(index).getPersonalGlobalKey();
    }


    /**
     * 获取index用户个人Email
     *
     * @return GK
     */
    default String getPersonalEmail(Integer index) {
        return userInfoList.get(index).getEmail();
    }


    default String getTeamGlobalKey() {
        return getTeamGlobalKey(0);
    }

    default String getTeamGlobalKey(Integer index) {
        return userInfoList.get(index).getTeamGlobalKey();
    }

    /**
     * 获取默认用户密码
     *
     * @return 默认用户密码
     */
    default String getPassword(Boolean isSha1) {
        return getPassword(0, isSha1);
    }


    /**
     * 获取index用户密码
     *
     * @param index
     * @return index用户密码
     */
    default String getPassword(Integer index, Boolean isSha1) {
        String password = userInfoList.get(index).getPassword();
        if (isSha1) {
            return DigestUtils.sha1Hex(password);
        }
        return password;
    }

    /**
     * 添加用户
     *
     * @param userInfo
     */
    default void addUserInfo(UserInfo userInfo) {
        userInfoList.add(userInfo);
    }

    /**
     * 获取Id名，开发者版为sid，企业版为eid
     *
     * @return
     */
    String getIdentificationName();

    /**
     * 获取默认用户信息
     * @return
     */
    default UserInfo getUserInfo() {
        return getUserInfo(0);
    }

    /**
     * 获取用户信息
     * @param index
     * @return
     */
    default UserInfo getUserInfo(Integer index) {
        return userInfoList.get(index);
    }

    String getTeamOwner();
}
